/**
 * 防抖函数,参数(function(),时间)
 * @param func
 * @param delay
 * @returns {function(...[*]=): void}
 */
export function debounce(func, delay = 100) {
  let timer = null;//该timer只会执行一次
  return function (...args) {
    if (timer) clearTimeout(timer);
    timer = setTimeout(() => {
      func.apply(this, args)
    }, delay)
  }
}

/**
 * 格式化日期函数
 * date为 new Date()对象， fmt为 'yyyy-MM-dd h:m:s'的格式
 */
export function formatDate(date, fmt) {
  //获取年份
  if (/(y+)/.test(fmt)) {
    //将date进行格式化，转成对应的字符串
    let dateY = date.getFullYear() + "";//取到年份
    //RegExp.$1 在判断中出现过，且是括号括起来的，所以 RegExp.$1 就是 "yyyy"
    fmt = fmt.replace(RegExp.$1, dateY.substr(4 - RegExp.$1.length));
  }
  //获取其他
  let o = {
    "M+": date.getMonth() + 1,  //M+ 匹配m的个数
    "d+": date.getDate(),
    "h+": date.getHours(),  //H和h
    "m+": date.getMinutes(),
    "s+": date.getSeconds()
  };
  for (const k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      let str = o[k] + "";
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? str : padLeftZero(str)
      );
    }
  }
  return fmt;
}
/**
 * 补零
 * */
function padLeftZero(str) {
  return ("00" + str).substr(str.length);
}
